package com.vvv.designpattern.structuredpattern;

/**
 * @author vvv
 * @date 2023-11-13 18 23
 * discription
 */
public class Proxy {
    /**
     * 首先代理模式可以分为多种类型
     *
     * 远程代理：就是将工作委托给远程对象（不同的服务器，或者不同的进程）来完成。常见的是用在web Service中。还有就是我们的RPC调用也可以理解为一种远程代理。
     * 保护代理：该模式主要进行安全/权限检查。（接触很少）
     * 缓存代理：这个很好理解，就是通过存储来加速调用，比如Sping中的@Cacheable方法，缓存特定的参数获取到的结果，当下次相同参数调用该方法，直接从缓存中返回数据。
     * 虚拟代理：这种代理主要是为方法增加功能，比如记录一些性能指标等，或进行延迟初始化
     *
     * 下面我们以虚拟代理为例子讲解：
     * 虚拟代理又分为
     * 1. 静态代理，
     * 2. jdk动态代理
     * 3. Cglib动态代理
     * 下面的讲解中：
     * 代理的接口为：xxxSubject
     * 代理对象为：xxxProxy
     * 被代理对象为(即目标对象)：xxxRealSubject
     * main方法为Client请求者
     *
     * 资料：
     * https://juejin.cn/post/6981237386785062942?searchId=2023111318075919DCB9930616D44BE6A6#heading-3
     * https://juejin.cn/post/7029945517782073374#heading-0
     */
}
